package jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 *
 * @param T: DAO处理实体类的类型
 * @author lzy
 * @create 2018-07-31 下午4:52
 * 访问数据的DAO接口
 * 里面定义好访问数据表的各种方法
 */
public interface DaoBase<T> {

    /**
     * 批量处理方法
     *
     * @param connection
     * @param sql
     * @param args
     */
    void batch(Connection connection, String sql, Object[]... args) throws SQLException;

    /**
     * 返回具体的一个值，例如行数
     *
     * @param connection
     * @param sql
     * @param args
     * @param <E>
     * @return
     */
    <E> E getForValue(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * 返回一个T的集合
     *
     * @param connection
     * @param sql
     * @param args
     * @return
     */
    List<T> getForList(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * 返回一个T 的对象
     *
     * @param connection
     * @param sql
     * @param args
     * @return
     */
    T get(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * INSERT, UPDATE, DELETE
     *
     * @param connection:数据库连接
     * @param sql:sql语句
     * @param args:填充占位符的可变参数
     */
    void update(Connection connection, String sql, Object... args) throws SQLException;


}
